import re


def is_valid_chinese_id_card(id_card):
    pattern = r'^[1-9]\d{5}(18|19|20)\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}(\d|X)$'
    return bool(re.match(pattern, id_card))


# 测试
id_cards = ['11010519491231002X', '110105194912310021', '123456789012345', '11010519490231002X', '11010519491331002X']
for id_card in id_cards:
    if is_valid_chinese_id_card(id_card):
        print(f"{id_card} 是有效的中国身份证号码")
    else:
        print(f"{id_card} 不是有效的中国身份证号码")
